﻿using System;

namespace Caramel.ServiceBus
{
	public interface IServiceBus
	{
		ICallback Send<T>(T command) where T : ICommand;

		ICallback Send<T>(params T[] commands) where T : ICommand;

		void Return(object value);

		void Reply(object message);

		void Publish<T>(T @event) where T : IEvent;

		void Publish<T>(params T[] events) where T : IEvent;
	}
}
